home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / lapack / dladiv.f < prev    next >
Text File  |  1996-07-19  |  2KB  |  64 lines

  1.       SUBROUTINE DLADIV( A, B, C, D, P, Q )
  2. *
  3. *  -- LAPACK auxiliary routine (version 2.0) --
  4. *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
  5. *     Courant Institute, Argonne National Lab, and Rice University
  6. *     October 31, 1992
  7. *
  8. *     .. Scalar Arguments ..
  9.       DOUBLE PRECISION   A, B, C, D, P, Q
  10. *     ..
  11. *
  12. *  Purpose
  13. *  =======
  14. *
  15. *  DLADIV performs complex division in  real arithmetic
  16. *
  17. *                        a + i*b
  18. *             p + i*q = ---------
  19. *                        c + i*d
  20. *
  21. *  The algorithm is due to Robert L. Smith and can be found
  22. *  in D. Knuth, The art of Computer Programming, Vol.2, p.195
  23. *
  24. *  Arguments
  25. *  =========
  26. *
  27. *  A       (input) DOUBLE PRECISION
  28. *  B       (input) DOUBLE PRECISION
  29. *  C       (input) DOUBLE PRECISION
  30. *  D       (input) DOUBLE PRECISION
  31. *          The scalars a, b, c, and d in the above expression.
  32. *
  33. *  P       (output) DOUBLE PRECISION
  34. *  Q       (output) DOUBLE PRECISION
  35. *          The scalars p and q in the above expression.
  36. *
  37. *  =====================================================================
  38. *
  39. *     .. Local Scalars ..
  40.       DOUBLE PRECISION   E, F
  41. *     ..
  42. *     .. Intrinsic Functions ..
  43.       INTRINSIC          ABS
  44. *     ..
  45. *     .. Executable Statements ..
  46. *
  47.       IF( ABS( D ).LT.ABS( C ) ) THEN
  48.          E = D / C
  49.          F = C + D*E
  50.          P = ( A+B*E ) / F
  51.          Q = ( B-A*E ) / F
  52.       ELSE
  53.          E = C / D
  54.          F = D + C*E
  55.          P = ( B+A*E ) / F
  56.          Q = ( -A+B*E ) / F
  57.       END IF
  58. *
  59.       RETURN
  60. *
  61. *     End of DLADIV
  62. *
  63.       END
  64.